Skip to main content

高级配置

经过上面两篇教程的讲解,相信师傅们已经能够正常地使用Web Fuzzer模块进行重放与爆破了。但是有时候我们会遇到一些问题,例如我们需要在爆破时使用代理,或者我们需要在爆破时使用国密TLS等场景,这时候我们就需要对Web Fuzzer进行一些高级配置了。

首先我们需要打开高级配置,如图所示:

点击右边的高级配置按钮(旧版本)或者点击左边的Fuzzer配置按钮(新版本),我们可以打开高级配置菜单,我们接下来逐一讲解。

高级配置#

强制HTTPS#

开启强制HTTPS选项,可以使得这次请求强制使用HTTPS协议而非HTTP协议进行通信,这在某些网站要求强制使用HTTPS时非常有用。

国密TLS#

开启国密TLS选项,可以使得这次请求使用国密TLS协议进行通信,可以在某些网站要求使用国密TLS进行通信时使用。

真实Host#

我们知道,Web Fuzzer在默认情况下会从请求包中提取Host请求头来作为我们要通信目标,但是有时候我们需要手动指定Host请求头,这时候我们就可以填写真实Host,这样Web Fuzzer就会使用我们手动指定的真实Host来进行通信,这在Host碰撞的场景下非常有用。

设置代理#

默认情况下,Web Fuzzer会走系统代理来进行发包。但是有时候我们需要手动指定代理,这时候我们就可以填写设置代理,这样Web Fuzzer就会使用我们手动指定的代理来进行通信,这在访问内网服务的场景下非常有用。在指定多个代理的情况下,Web Fuzzer会智能找到可用的代理进行请求。

禁用系统代理#

默认情况下,Web Fuzzer会走系统代理来进行发包。但是有时候我们不想使用系统代理,或者说这次发包不应该走系统代理,这时候我们就可以开启禁用系统代理选项。

响应数量限制#

响应数量限制用于限制页面中最多渲染多少个请求响应,这个限制是由于请求响应过多时可能会对前端渲染造成一定的压力,所以需要对其进行限制。限制后如果想要查看所有响应,可以点击查看全部按钮:

响应体长度限制#

响应体长度限制用于限制页面中最多渲染的最长响应长度,这个限制是由于响应过大时可能会对前端渲染造成一定的压力,所以需要对其进行限制。当响应长度超过限制时,Web Fuzzer 会自动截断响应体,并显示超大响应,如果想要查看完整响应,可以点击完整响应按钮,在本地查看:

请求包配置#

Fuzztag 辅助#

这也是一个用于辅助我们构造 Fuzztag 的工具。我们可以选择一些基础fuzztag,然后对他进行修改,查看生成后的 payload ,并且还可以将其添加到插入标签悬浮框的常用标签中。

渲染 Fuzz#

默认情况下,渲染 Fuzz选项是打开并选中标准模式的。 三个模式的区别如下:

  1. 关闭:关闭该选项之后,所有的 Fuzztag 就会失效。这在我们不需要Fuzz标签而且与某些模板引擎语法冲突的情况下非常有用。
  2. 标准:标准模式下,Web Fuzzer 会对请求包中的Fuzz标签进行渲染,每个 Fuzztag 必须严格符合{{tagname1({{tagname2(param)}})}}的格式。
  3. 兼容:兼容模式下,Web Fuzzer 会对请求包中的Fuzz标签进行渲染,在嵌套fuzztag的情况下,我们可以省略多余的花括号,例如:{{tagname1(tagname2(param))}}

不修复长度#

默认情况下,Web Fuzzer会对请求包进行一些修复,其中也会对Content-Length请求头进行修复。我们知道,在数据包完全正确的情况下,Content-Length请求头的值应该等于请求体的长度,但是一般情况下我们修改了请求体之后不可能手动去计算Content-Length的值,这时候Web Fuzzer就会自动修复Content-Length的值。但是有时候我们可能遇到HTTP走私的情况或者不希望Web Fuzzer修复长度,这时候我们就可以开启不修复长度选项。

超时时长#

即每个请求的超时时间,单位为秒。在请求超时时,Web Fuzzer会自动返回并提示请求超时的错误。

批量目标#

批量目标在你要对多个目标进行测试时非常有用。我们可以通过手动输入或者上传文件的方式来指定多个目标,这些目标之间用英文逗号或换行符分隔:

并发配置#

重复发包#

重复发包一般用于测试条件竞争或者大并发的情况。填写重复发包的值(后续称之为n)后,Web Fuzzer会重复发包n次。这实际上也是通过添加了fuzztag标签实现的,其等价于在请求包的任意位置添加{{repeat(n)}}

并发线程#

在我们设置了fuzztag后,我们可能会发送不止一个数据包,此时我们可以通过填写并发线程的值控制用于并发的线程数量。这在我们需要进行快速并发测试或者请求网站的防火墙对访问速度有限制时非常有用。

随机延迟#

在我们并发请求网站的场景下,请求网站的防火墙可能会对访问速度有限制,此时我们可以通过设置随机延迟的Min和Max值,这样可以在每次请求之前延迟随机的时间(Min-Max秒),这可以在一定程度上通过请求网站的防火墙。

重试配置#

重试次数#

在网络请求中,我们不可避免会遇到许多网络连通性的问题,比如服务器负载过高导致服务端错误(502状态码)或者网络波动导致请求失败,此时我们可以通过设置重试次数的值来控制Web Fuzzer重试的次数,这可以在一定程度上提高请求的稳定性。

重试条件#

重试条件配合重试次数使用。我们可以通过填写重试条件中状态码的值,设置其在响应什么状态码时进行重试。例如我们填写了502,503,则当响应状态码为502或者503时,Web Fuzzer会进行重试。

不重试条件#

不重试条件配合重试次数使用。我们可以通过填写不重试条件中状态码的值,设置其在响应什么状态码时不进行重试。例如我们填写了200,302,则当响应状态码为200或者302时,Web Fuzzer不会进行重试。无论如何,Web Fuzzer不会对30x的响应状态码进行重试。

重定向配置#

禁用重定向#

开启禁用重定向选项可以禁用请求时的自动重定向。这在我们需要测试重定向漏洞时非常有用。

重定向次数#

重定向次数的值只有在关闭禁用重定向选项时生效。它表示的是在请求时最多允许重定向多少次。

JS重定向#

我们知道js一般通过调用window.location.href或者window.location.replace来进行页面的重定向。一般情况下这种重定向是无法跟踪的,这时候我们就需要开启JS重定向选项,来跟踪这种重定向。

DNS配置#

DNS服务器#

DNS服务器用于指定本次请求使用的DNS服务器。在默认情况下,Web Fuzzer会使用系统的DNS服务器,但是有时候我们需要手动指定DNS服务器,这时候我们就可以填写DNS服务器的值,这在访问一些内网服务时非常有用。

Hosts配置#

Hosts配置可以直接添加host到ip的映射。这在指定的dns服务器都无法正常工作的情况下非常有用。